Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Windows Driver Model</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Windows_Driver_Model"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Windows_Driver_Model rootpage-Windows_Driver_Model skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Windows Driver Model</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1236090951">
/* start https://en.wikipedia.org/ */


.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}


/* end https://en.wikipedia.org/ */
</style><div role="note" class="hatnote navigation-not-searchable">Not to be confused with the <a href="Windows_Display_Driver_Model" title="Windows Display Driver Model">Windows Display Driver Model</a> (WDDM), a display driver architecture introduced with <a href="Windows_Vista" title="Windows Vista">Windows Vista</a>.</div>
<style data-mw-deduplicate="TemplateStyles:r1251242444">
/* start https://en.wikipedia.org/ */


.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}


/* end https://en.wikipedia.org/ */
</style>
<p>In <a href="Computing" title="Computing">computing</a>, the <b>Windows Driver Model</b> (<b>WDM</b>)&nbsp;โ€“ also known at one point as the <b>Win32 Driver Model</b>&nbsp;โ€“ is a framework for <a href="Device_driver" title="Device driver">device drivers</a> that was introduced with <a href="Windows_98" title="Windows 98">Windows 98</a> and <a href="Windows_2000" title="Windows 2000">Windows 2000</a> to replace <a href="VxD" title="VxD">VxD</a>, which was used on older versions of Windows such as <a href="Windows_95" title="Windows 95">Windows 95</a> and <a href="Windows_3.1x" class="mw-redirect" title="Windows 3.1x">Windows 3.1</a>, as well as the <a href="Windows_NT_Driver_Model" class="mw-redirect" title="Windows NT Driver Model">Windows NT Driver Model</a>.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Overview">Overview</h2></div>
<p>WDM drivers are layered in a stack and communicate with each other via <a href="I/O_request_packets" class="mw-redirect" title="I/O request packets">I/O request packets</a> (IRPs). The Microsoft Windows Driver Model unified driver models for the Windows 9x and Windows NT product lines by standardizing requirements and reducing the amount of code that needed to be written. WDM drivers will not run on operating systems earlier than Windows 98 or Windows 2000, such as Windows 95 (before the OSR2 update that sideloads the WDM model), Windows NT 4.0 and Windows 3.1. By conforming to WDM, drivers can be <a href="Binary-code_compatibility" title="Binary-code compatibility">binary compatible</a> and <a href="Source-code_compatibility" title="Source-code compatibility">source-compatible</a> across Windows 98, Windows 98 Second Edition, <a href="Windows_Me" title="Windows Me">Windows Me</a>, Windows 2000, <a href="Windows_XP" title="Windows XP">Windows XP</a> and <a href="Windows_Server_2003" title="Windows Server 2003">Windows Server 2003</a> on <a href="X86" title="X86">x86</a>-based computers. WDM drivers are designed to be <a href="Forward_compatibility" title="Forward compatibility">forward-compatible</a> so that a WDM driver can run on a version of Windows newer than what the driver was initially written for, but doing that would mean that the driver cannot take advantage of any new features introduced with the new version. WDM is generally not <a href="Backward_compatibility" title="Backward compatibility">backward-compatible</a>, that is, a WDM driver is not guaranteed to run on any older version of Windows. For example, <a href="Windows_XP" title="Windows XP">Windows XP</a> can use a driver written for <a href="Windows_2000" title="Windows 2000">Windows 2000</a> but will not make use of any of the new WDM features that were introduced in Windows XP. However, a driver written for Windows XP may or may not load on Windows 2000.
</p><p>WDM exists in the intermediary layer of Windows 2000 <a href="Kernel-mode" class="mw-redirect" title="Kernel-mode">kernel-mode</a> drivers and was introduced to increase the functionality and ease of writing drivers for Windows. Although WDM was mainly designed to be binary and source compatible between <a href="Windows_98" title="Windows 98">Windows 98</a> and Windows 2000, this may not always be desired and so specific drivers can be developed for either operating system.
</p>
<div class="mw-heading mw-heading3"><h3 id="Device_kernel-mode_drivers">Device kernel-mode drivers</h3></div>
<p>With the Windows Drivers Model (WDM) for devices Microsoft implements an approach to <a href="Kernel_mode" class="mw-redirect" title="Kernel mode">kernel mode</a> drivers that is unique to <a href="Microsoft_Windows" title="Microsoft Windows">Windows operating systems</a>. WDM implements a layered architecture for <a href="Device_drivers" class="mw-redirect" title="Device drivers">device drivers</a>, and every device of a computer is served by a stack of drivers. However, every driver in that stack can chain isolate hardware-independent features from the driver above and beneath it. So drivers in the stack do not need to interact directly with one another. WDM defines architecture and device procedures for a range of devices, such as display and the <a href="Network_card" class="mw-redirect" title="Network card">network card</a>, known as <a href="Network_Driver_Interface_Specification" title="Network Driver Interface Specification">Network Driver Interface Specification</a> (NDIS). In the NDIS architecture the layered network drivers include lower-level drivers that manage the hardware and upper-level drivers that implement network data transport, such as the <a href="Transmission_Control_Protocol" title="Transmission Control Protocol">Transmission Control Protocol</a> (TCP).<sup id="cite_ref-Vieira_1-0" class="reference"><a href="#cite_note-Vieira-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p><p>While WDM defines three types of device drivers, not all driver stacks for a given device contain all types of device drivers. The three WDM device driver types are:<sup id="cite_ref-Vieira_1-1" class="reference"><a href="#cite_note-Vieira-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p><p><b>Bus driver</b>: For every <a href="Bus_(computing)" title="Bus (computing)">bus</a> on the mainboard there is a one bus driver, with the primary responsibility for the identification of all devices connected to that bus and responding to plug and play events. Microsoft will provide bus drivers as part of the operating system,<sup id="cite_ref-Vieira_1-2" class="reference"><a href="#cite_note-Vieira-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> such as <a href="Peripheral_Component_Interconnect" title="Peripheral Component Interconnect">PCI</a>, <a href="Plug-And-Play" class="mw-redirect" title="Plug-And-Play">PnPISA</a>, <a href="SCSI" title="SCSI">SCSI</a>, <a href="USB" title="USB">USB</a> and <a href="FireWire" class="mw-redirect" title="FireWire">FireWire</a>.
</p><p><b>Function driver</b>: this is the principal driver for a device and it provides the operational interface for a device by handling read and write operations. Function drivers are written by the device vendors, and for their interaction with the hardware they depend on a specific bus driver being present in the Windows operating system.<sup id="cite_ref-Vieira_1-3" class="reference"><a href="#cite_note-Vieira-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p><p><b>Filter driver</b>: This driver is optional, and can modify the behaviour of a device, such as input and output requests. These drivers can be implemented as lower-level and upper-level filter drivers.<sup id="cite_ref-Vieira_1-4" class="reference"><a href="#cite_note-Vieira-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Object-oriented_driver_stack">Object-oriented driver stack</h3></div>
<p>Function drivers and bus drivers are often implemented as driver/minidriver pairs, which in practice is either a class or miniclass, or a port or miniport pair.<sup id="cite_ref-Blunden_2-0" class="reference"><a href="#cite_note-Blunden-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p><p>Bus drivers for devices attached to a bus are implemented as class drivers and are hardware-agnostic. They will support the operations of a certain type of device. Windows operating systems include a number of class drivers, such as the kbdclass.sys driver for keyboards. Miniclass drivers on the other hand are supplied by the vendor of a device, and only support device specific operations, for a particular device of a given class.<sup id="cite_ref-Blunden_2-1" class="reference"><a href="#cite_note-Blunden-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p><p>Port drivers support general <a href="Input/output" title="Input/output">input/output</a> (I/O) operations for a peripheral hardware interface. The core functionality of port drivers is mandated by the operating system, and Windows operating systems integrate a variety of port drivers. For example, the i8042prt.sys port driver for the 8042 microcontroller connects <a href="PS/2" class="mw-redirect" title="PS/2">PS/2</a> keyboards to the mainboard peripheral bus. The miniport drivers, like the miniclass drivers, are supplied by the hardware vendors and support only device specific operations of peripheral hardware that is connected to a port on the mainboard.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>
</p><p>Each driver that processes an I/O request for a device has a corresponding object, which is loaded into <a href="Main_memory" class="mw-redirect" title="Main memory">main memory</a>. A device object is created by the Windows operating system from the associated device class. Device objects contain structures of type DEVICE_OBJECT, which store pointers to their driver. At run time these pointers are used to locate a driver's dispatch routine and member functions. In the WDM driver stack, the filter driver device object, known as the upper filter, will receive an <a href="I/O_request_packet" title="I/O request packet">I/O request packet</a> (IRP) for a device from the I/O manager. If the upper filter driver can not serve the request, it will locate the object of the driver one step down in the driver stack. The IRP is passed down the driver stack by calling the function IoCallDriver(), and processed by the function driver device object, also known as functional device object. The function driver device object in turn may pass the IRP to the lower filter, another filter device object. Then the IRP may be passed down to the bus driver, which operates as the physical device object. The bus driver object is at the bottom of the driver stack, and interacts with the <a href="Hardware_abstraction_layer" class="mw-redirect" title="Hardware abstraction layer">hardware abstraction layer</a>, which is part of the <a href="Architecture_of_Windows_NT" title="Architecture of Windows NT">Windows operating system kernel</a> and allows Windows operating systems to run on a variety of <a href="Processor_(computing)" title="Processor (computing)">processors</a>, different <a href="Memory_management_unit" title="Memory management unit">memory management unit</a> architectures, and a variety of computer systems with different I/O bus architectures.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> The execution of an IRP is finished when any of the driver objects in the stack returns the request back to the I/O manager, with the result and a status flag.<sup id="cite_ref-Penkler_6-0" class="reference"><a href="#cite_note-Penkler-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Device_drivers_for_different_Windows_operating_systems">Device drivers for different Windows operating systems</h2></div>
<p>The WDM framework was developed by Microsoft to simplify the communication between the operating system and drivers inside the kernel. In Windows operating systems, drivers are implemented as <a href="Dynamic_Link_Libraries" class="mw-redirect" title="Dynamic Link Libraries">Dynamic Link Libraries</a> .DLL or .SYS files. WDM compliant drivers must follow rules of design, initialisation, plug-and-play, power management and memory allocation. In practice WDM driver programmers reuse large pieces of code when building new <a href="Object-oriented_programming" title="Object-oriented programming">object-oriented</a> drivers. This means that drivers in the WDM stack may contain residual functionality, which is not documented in specifications.<sup id="cite_ref-Penkler_6-1" class="reference"><a href="#cite_note-Penkler-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> Drivers that have passed the Microsoft quality test are digitally signed by Microsoft. The <a href="WHQL_Testing" title="WHQL Testing">Microsoft Hardware Compatibility Tests</a> and the Driver Development Kit include reliability and stress tests.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>
</p><p>A device driver that is not designed for a specific hardware component may allow another device to function. This is because the basic functionality of a hardware device class is similar. The functionality of the video card class, for example, allows the Microsoft Basic Display Adapter driver to work with a wide variety of video cards. However, installing the wrong driver for a device will mean that the full functionality of the device can not be used, and may result in poor performance and the destabilization of the Windows operating system. Hardware device vendors may release updated device drivers for particular Windows operating systems, to improve performance, add functionality or fix <a href="Software_bug" title="Software bug">bugs</a>. If a device is not working as expected the latest device drivers should be downloaded from the vendor website and installed.<sup id="cite_ref-:2_8-0" class="reference"><a href="#cite_note-:2-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>
</p><p>Device drivers are designed for particular Windows operating system versions, and device drivers for a previous version of Windows may not work correctly or at all with other versions. Because many device drivers run in kernel mode installing drivers for a previous operating system version may destabilise the Windows operating system. Migrating a computer to a higher version of a Windows operating system therefore requires that new device drivers are installed for all hardware components. Finding up to date device drivers and installing them for <a href="Windows_10" title="Windows 10">Windows 10</a> has introduced complications into the migration process.<sup id="cite_ref-:2_8-1" class="reference"><a href="#cite_note-:2-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>
</p><p>Common device driver compatibility issues include: a <a href="32-bit" class="mw-redirect" title="32-bit">32-bit</a> device driver is required for a 32-bit Windows operating system, and a <a href="64-bit" class="mw-redirect" title="64-bit">64-bit</a> device driver is required for a 64-bit Windows operating system. 64-bit device drivers must be signed by Microsoft, because they run in kernel mode and have unrestricted access to the computer hardware. For operating systems prior to Windows 10 Microsoft allowed vendors to sign their 64-bit drivers themselves, assuming vendors had undertaken compatibility tests. However, Windows 10 64-bit drivers now need to be signed by Microsoft. Therefore, device vendors have to submit their drivers to Microsoft for testing and approval. The driver installation package includes all files in the .inf directory, and all files in the package need to be installed, otherwise the installation of the device driver may fail. For operating system versions before Windows 10 not all files necessary for the driver installation were included in the package, as this requirement was not consistently enforced. Some device driver installers have a user interface <a href="GUI" class="mw-redirect" title="GUI">GUI</a>, often requiring user configuration input. The absence of a user interface does not mean that the installation of the device driver is not successful. Besides, Windows 10 device drivers are not allowed to include a user interface. The <a href="Network_Driver_Interface_Specification" title="Network Driver Interface Specification">Network Driver Interface Specification</a> (NDIS) 10.x is used for network devices by the Windows 10 operating system. Network device drivers for <a href="Windows_XP" title="Windows XP">Windows XP</a> use NDIS 5.x and may work with subsequent Windows operating systems, but for performance reasons network device drivers should implement NDIS 6.0 or higher.<sup id="cite_ref-:2_8-2" class="reference"><a href="#cite_note-:2-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Device_Manager">Device Manager</h2></div>
<p>The <a href="Device_Manager" title="Device Manager">Device Manager</a> is a Control Panel applet in Microsoft Windows operating systems. It allows users to view and control the hardware attached to the computer. It allows users to view and modify hardware device properties, and is also the primary tool to manage device drivers.<sup id="cite_ref-:2_8-3" class="reference"><a href="#cite_note-:2-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Criticism">Criticism</h2></div>
<p>The Windows Driver Model, while a significant improvement over the <a href="VxD" title="VxD">VxD</a> and <a href="Windows_NT_Driver_Model" class="mw-redirect" title="Windows NT Driver Model">Windows NT Driver Model</a> used before it, has been criticised by driver software developers,<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> most significantly for the following:
</p>
<ul><li>Interactions with <a href="Power_management" title="Power management">power management</a> events and <a href="Plug_and_play" title="Plug and play">plug and play</a> are difficult. This can lead to situations where Windows machines cannot enter or exit <a href="Sleep_mode" title="Sleep mode">sleep modes</a> correctly due to bugs in driver code.</li>
<li>I/O cancellation is difficult to get right.<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup></li>
<li>Complex boilerplate support code is required for every driver.</li>
<li>There is no support for writing pure <a href="User-mode" class="mw-redirect" title="User-mode">user-mode</a> drivers.</li></ul>
<p>There were also a number of concerns about the quality of documentation and samples that Microsoft provided.
</p><p>Because of these issues, Microsoft has released a new set of frameworks on top of WDM, called the <a href="Windows_Driver_Frameworks" title="Windows Driver Frameworks">Windows Driver Frameworks</a> (WDF; formerly Windows Driver Foundation), which includes <a href="Kernel-Mode_Driver_Framework" title="Kernel-Mode Driver Framework">Kernel-Mode Driver Framework</a> (KMDF) and <a href="User-Mode_Driver_Framework" title="User-Mode Driver Framework">User-Mode Driver Framework</a> (UMDF). <a href="Windows_Vista" title="Windows Vista">Windows Vista</a> supports both pure WDM and the newer WDF. KMDF is also available for download for Windows XP and Windows 2000, while UMDF is available for Windows XP and above.
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Windows_Driver_Frameworks" title="Windows Driver Frameworks">Windows Driver Frameworks</a> (WDF)
<ul><li><a href="Kernel-Mode_Driver_Framework" title="Kernel-Mode Driver Framework">Kernel-Mode Driver Framework</a> (KMDF)</li>
<li><a href="User-Mode_Driver_Framework" title="User-Mode Driver Framework">User-Mode Driver Framework</a> (UMDF)</li></ul></li>
<li><a href="Windows_Display_Driver_Model" title="Windows Display Driver Model">Windows Display Driver Model</a> (WDDM)</li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */


.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}


/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-Vieira-1"><span class="mw-cite-backlink">^ <a href="#cite_ref-Vieira_1-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Vieira_1-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-Vieira_1-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-Vieira_1-3"><sup><i><b>d</b></i></sup></a> <a href="#cite_ref-Vieira_1-4"><sup><i><b>e</b></i></sup></a></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */


.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}


/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFMarco_VieiraJoao_Carlos_Cunha2013" class="citation book cs1">Marco Vieira; Joao Carlos Cunha, eds. (2013). <i>Dependable Computing: 14th European Workshop, EWDC 2013, Coimbra, Portugal, May 15-16, 2013, Proceedings</i>. Springer. p.&nbsp;64. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>9783642387890</bdi>.</cite></span>
</li>
<li id="cite_note-Blunden-2"><span class="mw-cite-backlink">^ <a href="#cite_ref-Blunden_2-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Blunden_2-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFBill_Blunden2009" class="citation book cs1">Bill Blunden (2009). <i>The Rootkit Arsenal: Escape and Evasion</i>. Jones &amp; Bartlett Publishers. p.&nbsp;460. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>9781449661229</bdi>.</cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite id="CITEREFBill_Blunden2009" class="citation book cs1">Bill Blunden (2009). <i>The Rootkit Arsenal: Escape and Evasion</i>. Jones &amp; Bartlett Publishers. p.&nbsp;460. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>9781449661229</bdi>.</cite></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.microsoft.com/whdc/driver/wdf/wdf-intro.mspx">"Introduction to the Windows Driver Foundation"</a>. <a href="Microsoft_Developer_Network" title="Microsoft Developer Network">Microsoft Developer Network</a>. 2006-10-13<span class="reference-accessdate">. Retrieved <span class="nowrap">2010-12-06</span></span>. <q>The device class-specific driver models are typically structured as a port driver written by Microsoft paired with a miniport driver written by an independent hardware vendor. The port driver does much of the work required for the device class, and the miniport driver supports device-specific characteristics.</q></cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite id="CITEREFBill_Blunden2009" class="citation book cs1">Bill Blunden (2009). <i>The Rootkit Arsenal: Escape and Evasion</i>. Jones &amp; Bartlett Publishers. pp.&nbsp;<span class="nowrap">460โ€“</span>461. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>9781449661229</bdi>.</cite></span>
</li>
<li id="cite_note-Penkler-6"><span class="mw-cite-backlink">^ <a href="#cite_ref-Penkler_6-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Penkler_6-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFDave_PenklerManfred_ReitenspiessFrancis_Tam2006" class="citation book cs1">Dave Penkler; Manfred Reitenspiess; Francis Tam, eds. (2006). <i>Service Availability: Third International Service Availability Symposium, ISAS 2006, Helsinki, Finland, May 15-16, 2006, Revised Selected Papers</i>. Springer Science &amp; Business Media. p.&nbsp;124. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>9783540687245</bdi>.</cite></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><cite id="CITEREFDave_PenklerManfred_ReitenspiessFrancis_Tam2006" class="citation book cs1">Dave Penkler; Manfred Reitenspiess; Francis Tam, eds. (2006). <i>Service Availability: Third International Service Availability Symposium, ISAS 2006, Helsinki, Finland, May 15-16, 2006, Revised Selected Papers</i>. Springer Science &amp; Business Media. p.&nbsp;132. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>9783540687245</bdi>.</cite></span>
</li>
<li id="cite_note-:2-8"><span class="mw-cite-backlink">^ <a href="#cite_ref-:2_8-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:2_8-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-:2_8-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-:2_8-3"><sup><i><b>d</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFByron_WrightLeon_Plesniarski2016" class="citation book cs1">Byron Wright; Leon Plesniarski (2016). <i>Microsoft Specialist Guide to Microsoft Windows 10 (Exam 70-697, Configuring Windows Devices)</i>. Cengage Learning. p.&nbsp;96. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>9781285868578</bdi>.</cite></span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><cite id="CITEREFOney2003" class="citation magazine cs1">Oney, Walter (May 6, 2003). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20160125155441/http://www.wd-3.com/archive/FrameworkIntro.htm">"Introducing Windows Driver Framework"</a>. <i>Windows Driver Developer's Digest</i>. Vol.&nbsp;1, no.&nbsp;3. Archived from <a rel="nofollow" class="external text" href="http://www.wd-3.com/archive/FrameworkIntro.htm">the original</a> on 2016-01-25.</cite></span>
</li>
<li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://msdn.microsoft.com/library/windows/hardware/dn613954">"I/O Completion/Cancellation Guidelines"</a>. <i><a href="Microsoft_Developer_Network" title="Microsoft Developer Network">MSDN</a></i>. <a href="Microsoft" title="Microsoft">Microsoft</a>. May 5, 2003. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20180209182217/https://msdn.microsoft.com/library/windows/hardware/dn613954">Archived</a> from the original on February 9, 2018<span class="reference-accessdate">. Retrieved <span class="nowrap">2018-02-08</span></span>.</cite></span>
</li>
</ol></div></div>
<ul><li>Finnel, Lynn (2000). <i>MCSE Exam 70-215, Microsoft Windows 2000 Server</i>. <a href="Microsoft_Press" title="Microsoft Press">Microsoft Press</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>1-57231-903-8</bdi>.</li>
<li>Oney, Walter (2003). <i>Programming the Windows Driver Model</i>, <a href="Microsoft_Press" title="Microsoft Press">Microsoft Press</a>, <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>0-7356-1803-8</bdi>.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><a rel="nofollow" class="external text" href="https://www.scribd.com/doc/61435580/WDM-Input-Output-Concepts">WDM Input Output Concepts</a> - This article gives a high level overview of the I/O concepts as defined in the Windows Driver Model.</li>
<li><a rel="nofollow" class="external text" href="http://www.staudio.de/kb/english/drivers/">Windows driver API basics</a> - This article informs you about the basics behind sound card drivers such as WDM, <a href="Audio_Stream_Input/Output" title="Audio Stream Input/Output">ASIO</a>, <a href="MultiMedia_Extensions" class="mw-redirect" title="MultiMedia Extensions">MME</a>, DirectX, etc.</li>
<li><a rel="nofollow" class="external text" href="http://channel9.msdn.com/Showpost.aspx?postid=156316">Channel 9 Video</a> - Interview with the Device Management and Installation team at Microsoft, primarily covering <a href="Plug-and-play" class="mw-redirect" title="Plug-and-play">Plug-and-play</a>.</li>
<li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20160303194156/http://hisown.com/Talks/WK.pdf">Lecture Notes on Windows Kernel Programming</a> at the <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a> (archived March 3, 2016) - Free lecture notes book fragment detailing basic creation of Windows Drivers, Kernel Mode programming, and Memory management</li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */


.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" ยท ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}


/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}


/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="Microsoft_APIs_and_frameworks486" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}


/* end https://en.wikipedia.org/ */
</style><div id="Microsoft_APIs_and_frameworks486" style="font-size:114%;margin:0 4em"><a href="List_of_Microsoft_Windows_application_programming_interfaces_and_frameworks" title="List of Microsoft Windows application programming interfaces and frameworks">Microsoft APIs and frameworks</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%;line-height:1.2em">Graphics and UI</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Desktop_Window_Manager" title="Desktop Window Manager">Desktop Window Manager</a></li>
<li><a href="Direct2D" title="Direct2D">Direct2D</a></li>
<li><a href="Direct3D" title="Direct3D">Direct3D</a></li>
<li><a href="D3DX" title="D3DX">D3D (extensions)</a></li>
<li><a href="Graphics_Device_Interface" title="Graphics Device Interface">GDI / GDI+</a></li>
<li><a href="Windows_Presentation_Foundation" title="Windows Presentation Foundation">WPF</a></li>
<li><a href="Microsoft_Silverlight" title="Microsoft Silverlight">Silverlight</a></li>
<li><a href="Windows_UI_Library" title="Windows UI Library">WinUI</a></li>
<li><a href="Windows_Color_System" title="Windows Color System">Windows Color System</a></li>
<li><a href="Windows_Image_Acquisition" title="Windows Image Acquisition">Windows Image Acquisition</a></li>
<li><a href="Windows_Imaging_Component" title="Windows Imaging Component">Windows Imaging Component</a></li>
<li><a href="DirectX_Graphics_Infrastructure" title="DirectX Graphics Infrastructure">DirectX Graphics Infrastructure (DXGI)</a></li>
<li><a href="Windows_Advanced_Rasterization_Platform" title="Windows Advanced Rasterization Platform">Windows Advanced Rasterization Platform</a></li>
<li><a href="WinG" title="WinG">WinG</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;line-height:1.2em">Audio</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="DirectMusic" title="DirectMusic">DirectMusic</a></li>
<li><a href="DirectSound" title="DirectSound">DirectSound</a></li>
<li><a href="Cross-platform_Audio_Creation_Tool" title="Cross-platform Audio Creation Tool">XACT</a></li>
<li><a href="Microsoft_Speech_API" title="Microsoft Speech API">Speech API</a></li>
<li><a href="XAudio2" title="XAudio2">XAudio2</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;line-height:1.2em">Multimedia</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="DirectX" title="DirectX">DirectX</a>
<ul><li><a href="DirectX_Media_Objects" class="mw-redirect" title="DirectX Media Objects">Media Objects</a></li>
<li><a href="DirectX_Video_Acceleration" title="DirectX Video Acceleration">Video Acceleration</a></li></ul></li>
<li><a href="Xinput" class="mw-redirect" title="Xinput">Xinput</a></li>
<li><a href="DirectInput" title="DirectInput">DirectInput</a></li>
<li><a href="DirectShow" title="DirectShow">DirectShow</a></li>
<li><a href="Managed_DirectX" title="Managed DirectX">Managed DirectX</a></li>
<li><a href="Media_Foundation" title="Media Foundation">Media Foundation</a></li>
<li><a href="Microsoft_XNA" title="Microsoft XNA">XNA</a></li>
<li><a href="Windows_Media" title="Windows Media">Windows Media</a></li>
<li><a href="Video_for_Windows" title="Video for Windows">Video for Windows</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;line-height:1.2em">Web</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Trident_(software)" title="Trident (software)">MSHTML</a></li>
<li><a href="JScript" title="JScript">JScript</a></li>
<li><a href="VBScript" title="VBScript">VBScript</a></li>
<li><a href="Browser_Helper_Object" title="Browser Helper Object">BHO</a></li>
<li><a href="XMLHttpRequest" title="XMLHttpRequest">XDR</a></li>
<li><a href="Microsoft_Gadgets" title="Microsoft Gadgets">SideBar Gadgets</a></li>
<li><a href="TypeScript" title="TypeScript">TypeScript</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;line-height:1.2em">Data access</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Microsoft_Data_Access_Components" title="Microsoft Data Access Components">Data Access Components (MDAC)</a>
<ul><li><a href="ActiveX_Data_Objects" title="ActiveX Data Objects">ADO</a></li>
<li><a href="ADO.NET" title="ADO.NET">ADO.NET</a></li>
<li><a href="ODBC" class="mw-redirect" title="ODBC">ODBC</a></li>
<li><a href="OLE_DB" title="OLE DB">OLE DB</a></li></ul></li>
<li><a href="Extensible_Storage_Engine" title="Extensible Storage Engine">Extensible Storage Engine</a></li>
<li><a href="Entity_Framework" title="Entity Framework">Entity Framework</a></li>
<li><a href="Microsoft_Sync_Framework" title="Microsoft Sync Framework">Sync Framework</a></li>
<li><a href="Access_Database_Engine" title="Access Database Engine">Access Database Engine</a></li>
<li><a href="MSXML" title="MSXML">MSXML</a></li>
<li><a href="Open_Packaging_Conventions" title="Open Packaging Conventions">OPC</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;line-height:1.2em">Networking</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Winsock" title="Winsock">Winsock</a>
<ul><li><a href="Layered_Service_Provider" title="Layered Service Provider">LSP</a></li></ul></li>
<li><a href="Windows_Vista_networking_technologies#Winsock_Kernel" title="Windows Vista networking technologies">Winsock Kernel</a></li>
<li><a href="Windows_Filtering_Platform" title="Windows Filtering Platform">Filtering Platform</a></li>
<li><a href="Network_Driver_Interface_Specification" title="Network Driver Interface Specification">NDIS</a></li>
<li><a href="Windows_Rally" title="Windows Rally">Windows Rally</a></li>
<li><a href="Background_Intelligent_Transfer_Service" title="Background Intelligent Transfer Service">BITS</a></li>
<li><a href="Windows_Vista_networking_technologies#Peer-to-peer_communication" title="Windows Vista networking technologies">P2P API</a></li>
<li><a href="Microsoft_Message_Queuing" title="Microsoft Message Queuing">MSMQ</a></li>
<li><a href="DirectPlay" title="DirectPlay">DirectPlay</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;line-height:1.2em">Communication</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="MAPI" title="MAPI">Messaging API</a></li>
<li><a href="Telephony_Application_Programming_Interface" title="Telephony Application Programming Interface">Telephony API</a></li>
<li><a href="Windows_Communication_Foundation" title="Windows Communication Foundation">WCF</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;line-height:1.2em">Administration and<br>management</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Win32_console" class="mw-redirect" title="Win32 console">Win32 console</a></li>
<li><a href="Windows_Script_Host" title="Windows Script Host">Windows Script Host</a></li>
<li><a href="Windows_Management_Instrumentation" title="Windows Management Instrumentation">WMI (extensions)</a></li>
<li><a href="PowerShell" title="PowerShell">PowerShell</a></li>
<li><a href="Windows_Task_Scheduler" title="Windows Task Scheduler">Task Scheduler</a></li>
<li><a href="Windows_Vista_I/O_technologies#Offline_Files" title="Windows Vista I/O technologies">Offline Files</a></li>
<li><a href="Shadow_Copy" title="Shadow Copy">Shadow Copy</a></li>
<li><a href="Windows_Installer" title="Windows Installer">Windows Installer</a></li>
<li><a href="Windows_Error_Reporting" title="Windows Error Reporting">Error Reporting</a></li>
<li><a href="Event_Viewer#Windows_Event_Log" title="Event Viewer">Event Log</a></li>
<li><a href="Common_Log_File_System" title="Common Log File System">Common Log File System</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;line-height:1.2em"><a href="Component-based_software_engineering" title="Component-based software engineering">Component model</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Component_Object_Model" title="Component Object Model">COM</a></li>
<li><a href="Component_Object_Model#COM+" title="Component Object Model">COM+</a></li>
<li><a href="ActiveX" title="ActiveX">ActiveX</a></li>
<li><a href="Distributed_Component_Object_Model" title="Distributed Component Object Model">Distributed Component Object Model</a></li>
<li><a href=".NET_Framework" title=".NET Framework">.NET Framework</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;line-height:1.2em"><a href="Library_(computing)" title="Library (computing)">Libraries</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Framework_Class_Library" title="Framework Class Library">Framework Class Library</a></li>
<li><a href="Microsoft_Foundation_Class_Library" title="Microsoft Foundation Class Library">Microsoft Foundation Classes (MFC)</a></li>
<li><a href="Active_Template_Library" title="Active Template Library">Active Template Library (ATL)</a></li>
<li><a href="Windows_Template_Library" title="Windows Template Library">Windows Template Library (WTL)</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;line-height:1.2em"><a href="Device_driver" title="Device driver">Device drivers</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul>
<li><a href="Windows_Driver_Frameworks" title="Windows Driver Frameworks">WDF</a>
<ul><li><a href="Kernel-Mode_Driver_Framework" title="Kernel-Mode Driver Framework">KMDF</a></li>
<li><a href="User-Mode_Driver_Framework" title="User-Mode Driver Framework">UMDF</a></li></ul></li>
<li><a href="Windows_Display_Driver_Model" title="Windows Display Driver Model">WDDM</a></li>
<li><a href="Network_Driver_Interface_Specification" title="Network Driver Interface Specification">NDIS</a></li>
<li><a href="Universal_Audio_Architecture" title="Universal Audio Architecture">UAA</a></li>
<li><a href="VxD" title="VxD">VxD</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;line-height:1.2em">Security</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Microsoft_CryptoAPI" title="Microsoft CryptoAPI">Crypto API</a>
<ul><li><a href="CAPICOM" title="CAPICOM">CAPICOM</a></li></ul></li>
<li><a href="Windows_CardSpace" title="Windows CardSpace">Windows CardSpace</a></li>
<li><a href="Data_Protection_API" title="Data Protection API">Data Protection API</a></li>
<li><a href="Security_Support_Provider_Interface" title="Security Support Provider Interface">Security Support Provider Interface (SSPI)</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;line-height:1.2em"><a href=".NET_Framework" title=".NET Framework">.NET</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="ASP.NET" title="ASP.NET">ASP.NET</a></li>
<li><a href="ADO.NET" title="ADO.NET">ADO.NET</a></li>
<li><a href=".NET_Remoting" title=".NET Remoting">Remoting</a></li>
<li><a href="Microsoft_Silverlight" title="Microsoft Silverlight">Silverlight</a></li>
<li><a href="Task_Parallel_Library" class="mw-redirect" title="Task Parallel Library">TPL</a></li>
<li><a href="Windows_Communication_Foundation" title="Windows Communication Foundation">WCF</a></li>
<li><a href="Windows_CardSpace" title="Windows CardSpace">WCS</a></li>
<li><a href="Windows_Presentation_Foundation" title="Windows Presentation Foundation">WPF</a></li>
<li><a href="Windows_Workflow_Foundation" title="Windows Workflow Foundation">WF</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;line-height:1.2em"><a href="Software_Factory_(Microsoft_.NET)" class="mw-redirect" title="Software Factory (Microsoft .NET)">Software factories</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Microsoft_Enterprise_Library" title="Microsoft Enterprise Library">Enterprise Library</a></li>
<li><a href="Microsoft_Customer_Care_Framework" title="Microsoft Customer Care Framework">CCF</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;line-height:1.2em"><a href="Inter-process_communication" title="Inter-process communication">IPC</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Microsoft_RPC" title="Microsoft RPC">MSRPC</a></li>
<li><a href="Dynamic_Data_Exchange" title="Dynamic Data Exchange">Dynamic Data Exchange (DDE)</a></li>
<li><a href=".NET_Remoting" title=".NET Remoting">Remoting</a></li>
<li><a href="Windows_Communication_Foundation" title="Windows Communication Foundation">WCF</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;line-height:1.2em">Accessibility</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Microsoft_Active_Accessibility" title="Microsoft Active Accessibility">Active Accessibility</a></li>
<li><a href="Microsoft_UI_Automation" title="Microsoft UI Automation">UI Automation</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;line-height:1.2em">Text and multilingual<br>support</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="DirectWrite" title="DirectWrite">DirectWrite</a></li>
<li><a href="Text_Services_Framework" title="Text Services Framework">Text Services Framework</a></li>
<li><a href="Text_Object_Model" title="Text Object Model">Text Object Model</a></li>
<li><a href="Input_method" title="Input method">Input method editor</a></li>
<li><a href="Language_Interface_Pack" title="Language Interface Pack">Language Interface Pack</a></li>
<li><a href="Multilingual_User_Interface" title="Multilingual User Interface">Multilingual User Interface</a></li>
<li><a href="Uniscribe" title="Uniscribe">Uniscribe</a></li></ul>
</div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-04-29" href="https://en.wikipedia.org/wiki/?title=Windows_Driver_Model&amp;oldid=1288006912">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>

</body></html>